package com.pfsoft.leetcode;

/**
 * @author pengfei
 * @date 2022年07月28日 10:25
 * 给你一个数组 nums 。数组「动态和」的计算公式为：runningSum[i] = sum(nums[0]…nums[i]) 。
 * <p>
 * 请返回 nums 的动态和。
 * 示例 1：
 * <p>
 * 输入：nums = [1,2,3,4]
 * 输出：[1,3,6,10]
 * 解释：动态和计算过程为 [1, 1+2, 1+2+3, 1+2+3+4] 。
 * 示例 2：
 * <p>
 * 输入：nums = [1,1,1,1,1]
 * 输出：[1,2,3,4,5]
 * 解释：动态和计算过程为 [1, 1+1, 1+1+1, 1+1+1+1, 1+1+1+1+1] 。
 * 示例 3：
 * <p>
 * 输入：nums = [3,1,2,10,1]
 * 输出：[3,4,6,16,17]
 *  
 * <p>
 * 提示：
 * <p>
 * 1 <= nums.length <= 1000
 * -10^6 <= nums[i] <= 10^6
 * 通过次数187,484提交次数224,795
 */

public class Question1480 {

    public static void main(String[] args){
        Question1480 question1480=new Question1480();
        int[] inputArray={3,1,2,10,1};
        try {
            int[] result = question1480.runningSum(inputArray);
            for(int i=0;i<result.length;i++){
                System.out.println(result[i]);
            }

        } catch (Exception e) {
            e.printStackTrace();
        }

    }


    /**
     * runningSum[i] = sum(nums[0]…nums[i])
     *  * 输入：nums = [3,1,2,10,1]
     *  * 输出：[3,4,6,16,17]
     * @param nums
     * @return
     * @throws Exception
     */
    private  int[] runningSum(int[] nums)   {
        if (nums.length < 1 || nums.length > 1000) {
            System.out.println("数组长度不正确");
        }
        int[] resultArray=new int[nums.length];
        for(int i=0;i<nums.length;i++){
            if(!this.numRangeCheck(nums[i])){
                System.out.println("数字超过范围");
            }
            else {
                //算法部分
                if(i==0){
                    resultArray[i]=nums[i];
                }else{
                    resultArray[i]=resultArray[i-1]+nums[i];
                }
            }
        }
        return resultArray;
    }

    private boolean numRangeCheck(int num) {
        boolean ret = true;
        if (num < -10000000 || num > 10000000) {
            ret = false;
        }
        return ret;
    }

}
